A compiler traditionally compiles a programming language and to transforms it into an executable code. The compiler performs syntactic, semantic analysis and code generation on the programming language. The compiler can be implemented in the front end or on the backend as well, and forms a complex system to check the grammar definition of the programming language.
A programming language consists of keywords forming the extent of the language. The language itself can be used in different contexts influencing the behavior of the language. However, in some programming language, new functionality cannot be added by introducing new keywords. Therefore, there is a need to allow the working of different groups on the same compiler implementation and to support the usage of the programming language in different contexts not necessarily known to a core development team of the programming language.